{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第二十一讲：特征值和特征向量\n",
    "\n",
    "## 特征值、特征向量的由来\n",
    "\n",
    "给定矩阵$A$，矩阵$A$乘以向量$x$，就像是使用矩阵$A$作用在向量$x$上，最后得到新的向量$Ax$。在这里，矩阵$A$就像是一个函数，接受一个向量$x$作为输入，给出向量$Ax$作为输出。\n",
    "\n",
    "在这一过程中，我们对一些特殊的向量很感兴趣，他们在输入($x$)输出($Ax$)的过程中始终保持同一个方向，这是比较特殊的，因为在大多情况下，$Ax$与$x$指向不同的方向。在这种特殊的情况下，$Ax$平行于$x$，我们把满足这个条件的$x$成为特征向量（Eigen vector）。这个平行条件用方程表示就是：\n",
    "\n",
    "$$Ax=\\lambda x\\tag{1}$$\n",
    "\n",
    "* 对这个式子，我们试着计算特征值为$0$的特征向量，此时有$Ax=0$，也就是特征值为$0$的特征向量应该位于$A$的零空间中。\n",
    "    \n",
    "    也就是说，如果矩阵是奇异的，那么它将有一个特征值为$\\lambda = 0$。\n",
    "\n",
    "* 我们再来看投影矩阵$P=A(A^TA)^{-1}A^T$的特征值和特征向量。用向量$b$乘以投影矩阵$P$得到投影向量$Pb$，在这个过程中，只有当$b$已经处于投影平面（即$A$的列空间）中时，$Pb$与$b$才是同向的，此时$b$投影前后不变（$Pb=1\\cdot b$）。\n",
    "    \n",
    "    即在投影平面中的所有向量都是投影矩阵的特征向量，而他们的特征值均为$1$。\n",
    "    \n",
    "    再来观察投影平面的法向量，也就是投影一讲中的$e$向量。我们知道对于投影，因为$e\\bot C(A)$，所以$Pe=0e$，即特征向量$e$的特征值为$0$。\n",
    "    \n",
    "    于是，投影矩阵的特征值为$\\lambda=1, 0$。\n",
    "\n",
    "* 再多讲一个例子，二阶置换矩阵$A=\\begin{bmatrix}0&1\\\\1&0\\end{bmatrix}$，经过这个矩阵处理的向量，其元素会互相交换。\n",
    "    \n",
    "    那么特征值为$1$的特征向量（即经过矩阵交换元素前后仍然不变）应该型为$\\begin{bmatrix}1\\\\1\\end{bmatrix}$。\n",
    "    \n",
    "    特征值为$-1$的特征向量（即经过矩阵交换元素前后方向相反）应该型为$\\begin{bmatrix}1\\\\-1\\end{bmatrix}$。\n",
    "\n",
    "再提前透露一个特征值的性质：对于一个$n\\times n$的矩阵，将会有$n$个特征值，而这些特征值的和与该矩阵对角线元素的和相同，因此我们把矩阵对角线元素称为矩阵的迹（trace）。$$\\sum_{i=1}^n \\lambda_i=\\sum_{i=1}^n a_{ii}$$\n",
    "\n",
    "在上面二阶转置矩阵的例子中，如果我们求得了一个特征值$1$，那么利用迹的性质，我们就可以直接推出另一个特征值是$-1$。\n",
    "\n",
    "## 求解$Ax=\\lambda x$\n",
    "\n",
    "对于方程$Ax=\\lambda x$，有两个未知数，我们需要利用一些技巧从这一个方程中一次解出两个未知数，先移项得$(A-\\lambda I)x=0$。\n",
    "\n",
    "观察$(A-\\lambda I)x=0$，右边的矩阵相当于将$A$矩阵平移了$\\lambda$个单位，而如果方程有解，则这个平移后的矩阵$(A-\\lambda I)$一定是奇异矩阵。根据前面学到的行列式的性质，则有$$\\det{(A-\\lambda{I})}=0\\tag{2}$$\n",
    "\n",
    "这样一来，方程中就没有$x$了，这个方程也叫作特征方程（characteristic equation）。有了特征值，代回$(A-\\lambda I)x=0$，继续求$(A-\\lambda I)$的零空间即可。\n",
    "\n",
    "* 现在计算一个简单的例子，$A=\\begin{bmatrix}3&1\\\\1&3\\end{bmatrix}$，再来说一点题外话，这是一个对称矩阵，我们将得到实特征值，前面还有置换矩阵、投影矩阵，矩阵越特殊，则我们得到的特征值与特征向量也越特殊。看置换矩阵中的特征值，两个实数$1, -1$，而且它们的特征向量是正交的。\n",
    "\n",
    "    回到例题，计算$\\det{(A-\\lambda{I})}=\\begin{vmatrix}3-\\lambda&1\\\\1&3-\\lambda\\end{vmatrix}$，也就是对角矩阵平移再取行列式。原式继续化简得$(3-\\lambda)^2-1=\\lambda^2-6\\lambda+8=0, \\lambda_1=4,\\lambda_2=2$。可以看到一次项系数$-6$与矩阵的迹有关，常数项与矩阵的行列式有关。\n",
    "\n",
    "    继续计算特征向量，$A-4I=\\begin{bmatrix}-1&1\\\\1&-1\\end{bmatrix}$，显然矩阵是奇异的（如果是非奇异说明特征值计算有误），解出矩阵的零空间$x_1=\\begin{bmatrix}1\\\\1\\end{bmatrix}$；同理计算另一个特征向量，$A-2I=\\begin{bmatrix}1&1\\\\1&1\\end{bmatrix}$，解出矩阵的零空间$x_2=\\begin{bmatrix}1\\\\-1\\end{bmatrix}$。\n",
    "\n",
    "    回顾前面转置矩阵的例子，对矩阵$A'=\\begin{bmatrix}0&1\\\\1&0\\end{bmatrix}$有$\\lambda_1=1, x_1=\\begin{bmatrix}1\\\\1\\end{bmatrix}, \\lambda_2=-1, x_2=\\begin{bmatrix}-1\\\\1\\end{bmatrix}$。看转置矩阵$A'$与本例中的对称矩阵$A$有什么联系。\n",
    "\n",
    "    易得$A=A'+3I$，两个矩阵特征值相同，而其特征值刚好相差$3$。也就是如果给一个矩阵加上$3I$，则它的特征值会加$3$，而特征向量不变。这也很容易证明，如果$Ax=\\lambda x$，则$(A+3I)x=\\lambda x+3x=(\\lambda+3)x$，所以$x$还是原来的$x$，而$\\lambda$变为$\\lambda+3$。\n",
    "\n",
    "接下来，看一个关于特征向量认识的误区：已知$Ax=\\lambda x, Bx=\\alpha x$，则有$(A+B)x=(\\lambda+\\alpha)x$，当$B=3I$时，在上例中我们看到，确实成立，但是如果$B$为任意矩阵，则推论**不成立**，因为这两个式子中的特征向量$x$并不一定相同，所以两个式子的通常情况是$Ax=\\lambda x, By=\\alpha y$，它们也就无从相加了。\n",
    "\n",
    "* 再来看旋转矩阵的例子，旋转$90^\\circ$的矩阵$Q=\\begin{bmatrix}\\cos 90&-\\sin 90\\\\\\sin 90&\\cos 90\\end{bmatrix}=\\begin{bmatrix}0&-1\\\\1&0\\end{bmatrix}$（将每个向量旋转$90^\\circ$，用$Q$表示因为旋转矩阵是正交矩阵中很重要的例子）。\n",
    "\n",
    "    上面提到特征值的一个性质：特征值之和等于矩阵的迹；现在有另一个性质：特征值之积等于矩阵的行列式。$$\\prod_{i=1}^n\\lambda_i=\\det A$$\n",
    "    \n",
    "    对于$Q$矩阵，有$\\begin{cases}\\lambda_1+\\lambda_2&=0\\\\\\lambda_1\\cdot\\lambda_2&=1\\end{cases}$，再来思考特征值与特征向量的由来，哪些向量旋转$90^\\circ$后与自己平行，于是遇到了麻烦，并没有这种向量，也没有这样的特征值来满足前面的方程组。\n",
    "    \n",
    "    我们来按部就班的计算，$\\det(Q-\\lambda I)=\\begin{vmatrix}\\lambda&-1\\\\1&\\lambda\\end{vmatrix}=\\lambda^2+1=0$，于是特征值为$\\lambda_1=i, \\lambda_2=-i$，我们看到这两个值满足迹与行列式的方程组，即使矩阵全是实数，其特征值也可能不是实数。本例中即出现了一对共轭负数，我们可以说，如果矩阵越接近对称，那么特征值就是实数。如果矩阵越不对称，就像本例，$Q^T=-Q$，这是一个反对称的矩阵，于是我得到了纯虚的特征值，这是极端情况，通常我们见到的矩阵是介于对称与反对称之间的。\n",
    "    \n",
    "    于是我们看到，对于好的矩阵（置换矩阵）有实特征值及正交的特征向量，对于不好的矩阵（$90^\\circ$旋转矩阵）有纯虚的特征值。\n",
    "    \n",
    "* 再来看一个更糟的情况，$A=\\begin{bmatrix}3&1\\\\0&3\\end{bmatrix}$，这是一个三角矩阵，我们可以直接得出其特征值，即对角线元素。来看如何得到这一结论的：$\\det(A-\\lambda I)=\\begin{vmatrix}3-\\lambda&1\\\\0&3-\\lambda\\end{vmatrix}=(3-\\lambda)^2=0$，于是$\\lambda_1=3, \\lambda_2=3$。而我们说这是一个糟糕的状况，在于它的特征向量。\n",
    "\n",
    "    带入特征值计算特征向量，带入$\\lambda_1=3$得$(A-\\lambda I)x=\\begin{bmatrix}0&1\\\\0&0\\end{bmatrix}\\begin{bmatrix}x_1\\\\x_2\\end{bmatrix}=\\begin{bmatrix}0\\\\0\\end{bmatrix}$，算出一个特征值$x_1=\\begin{bmatrix}1\\\\0\\end{bmatrix}$，当我们带入第二个特征值$\\lambda_1=3$时，我们无法得到另一个与$x_1$线性无关的特征向量了。\n",
    "    \n",
    "    而本例中的矩阵$A$是一个退化矩阵（degenerate matrix），重复的特征值在特殊情况下可能导致特征向量的短缺。\n",
    "    \n",
    "这一讲我们看到了足够多的“不好”的矩阵，下一讲会介绍一般情况下的特征值与特征向量。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
